Tengo la siguiente configuración de Nginx para mi aplicación Django:
upstream api { server localhost:8000; } server { listen 80; location / { proxy_pass http://api; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /staticfiles { alias /app/static/; } } Basé esta configuración en un tutorial aquí . Después de investigar un poco, parece que establecer el encabezado Host permite que la API de Django determine la dirección IP del cliente original (en lugar de la dirección IP del proxy).
¿Cuál es el punto del encabezado X-Forwarded-For ? Veo un campo llamado $http_x_forwarded_for en los registros de nginx, pero no estoy seguro de que esté relacionado.
De los documentos de Mozilla
El encabezado
X-Forwarded-For(XFF) es un encabezado estándar de facto para identificar la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un balanceador de carga. Cuando se intercepta tráfico entre clientes y servidores, los registros de acceso al servidor contienen solo la dirección IP del proxy o del equilibrador de carga. Para ver la dirección IP original del cliente, se utiliza el encabezado de solicitudX-Forwarded-For.
De hecho, creo que no has entendido bien el encabezado Host . Tengo entendido que será la IP del servidor nginx.